package org.dromara.admin.utils;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;

/**
 * 地址拼接工具类
 * 支持传入任意包含以下字段的对象：province（省）- city（市）- district（区）- detailAddress（详细地址）
 */
public class SpliceAddressUtils {

    /**
     * 通用：根据对象里地址信息自动拼接完整地址
     *
     * @param obj 任意包含省市区详细地址字段的对象（如 SupplierVo、CustomerVo）
     * @return 拼接后的完整地址字符串
     */
    public static String spliceAddress(Object obj) {
        if (obj == null) {
            return "";
        }

        // 使用 Hutool BeanUtil 安全获取属性
        String province = StrUtil.trimToNull(BeanUtil.getProperty(obj, "province")); // 省
        String city = StrUtil.trimToNull(BeanUtil.getProperty(obj, "city")); // 市
        String district = StrUtil.trimToNull(BeanUtil.getProperty(obj, "district")); // 区
        String detailAddress = StrUtil.trimToNull(BeanUtil.getProperty(obj, "detailAddress")); // 详细地址

        StringBuilder addressBuilder = new StringBuilder();

        if (StrUtil.isNotBlank(province)) {
            addressBuilder.append(province);
        }
        if (StrUtil.isNotBlank(city)) {
            addressBuilder.append(city);
        }
        if (StrUtil.isNotBlank(district)) {
            addressBuilder.append(district);
        }
        if (StrUtil.isNotBlank(detailAddress)) {
            addressBuilder.append(detailAddress);
        }

        return addressBuilder.toString();
    }
}
